Software applications, such as virtual machines (VMs), may be executed by a group, or “cluster,” of host computing devices. Each VM creates an abstraction of physical computing resources, such as a processor and memory, of the host executing the VM and executes a “guest” operating system, which, in turn, executes one or more software applications. The abstracted resources may be functionally indistinguishable from the underlying physical resources to the guest operating system and software applications.
Over time, VMs may experience degradation in performance, for example, as a result of the installation and removal of applications. More specifically, such performance degradation may result from increasing amounts of memory being allocated to temporary files and/or other undesired files within the VMs, increased execution time resulting from fragmented files within one or more virtual disks of the VMs, and/or increased execution time resulting from invalid or obsolete entries within system registries associated with operating systems installed on the VMs. To improve the performance of such VMs, intermittent or periodic maintenance may be performed on the VMs. Such maintenance may include, for example, removing undesired files from the VM or the applications of the VM, removing invalid or obsolete entries within an operating system registry, defragmenting one or more disks or memories associated with the VM, and/or any other suitable maintenance task or action.
Maintenance programs typically execute maintenance tasks from within the VM undergoing maintenance (hereinafter referred to as the “target VM”). More specifically, the target VM executes the maintenance program, and the maintenance program performs one or more maintenance tasks on or within the target VM. However, such an individualized approach to VM maintenance requires a user to keep the maintenance tool updated on each VM within a virtual infrastructure or system that may include hundreds or thousands of VMs. Moreover, an individual user may not perform maintenance tasks on target VMs with an optimal frequency. Accordingly, maintenance tasks may not be executed on an underperforming VM for an extended period of time, and the underperforming VM may also affect a performance of other VMs.
Moreover, existing maintenance programs may perform remote maintenance on a target VM. However, such remote maintenance often uses transmission control protocol and internet protocol (TCP/IP) and may be hindered by the presence of security measures, such as firewalls, operating within the VM or the computing device hosting the VM. Circumventing such security measures to perform remote maintenance on VMs may reduce the security of the VM and/or the host computing device. In addition, such maintenance programs may be unable to perform maintenance tasks on a VM that is offline.
Remote maintenance of VMs within different network domains may require an agent to be installed and executing within the VM. However, if agents are installed within VMs, the agents may need to be periodically updated, for example, with software patches or upgrades. Furthermore, existing maintenance programs may require a remote registry service to perform a registry maintenance operation on a VM executing a Microsoft WINDOWS brand operating system. The remote registry service generally must be executing in the VM, and the server or other device executing the maintenance operation must have sufficient privileges to access the VM.